v13: /goal stays copilot; autopilot only on explicit 'don't ask me' opt-in#221
Open
MagMueller wants to merge 1 commit into
Open
v13: /goal stays copilot; autopilot only on explicit 'don't ask me' opt-in#221MagMueller wants to merge 1 commit into
MagMueller wants to merge 1 commit into
Conversation
…opt-in You called out the confusion: "/goal make my startup successful" sounds nearly identical to a user just saying "my goal is to make my startup successful" — but in the previous model one triggered autopilot and the other didn't. That's a footgun. New model: - **/goal is a continuous goal-mode signal, but stays in copilot by default.** Agent keeps working across turns: scan, draft, post a card, end turn. User taps Yes/Skip/More on the card; that's a new turn (`--resume` carries session context); agent picks up where it left off, queues the next concrete action, posts the next card. Each turn is one cycle of the loop. State persists in `agency.db` / `goals.md` / `notebook.md`. No 30-min cap — a `/goal` can run for days. - **Autopilot is unlocked only by explicit user opt-in.** Phrases in the user's prompt like *"don't ask me", "just do it yourself", "no approvals", "full autonomy", "don't bother me", "act on your own"* flip the topic to autopilot — agent acts end-to-end, no cards, only stops at irreversible/external boundaries. Without one of those cues, **stay copilot even inside `/goal`**. - **Natural-language goals = same as `/goal`.** "Make my startup successful" with no slash command gets the same continuous copilot treatment. The slash is just a convention. System prompt updated. /help text + COMMANDS list cleaned up. Tests: 21 + 11 pass. Note: the codex `[features] goals = true` config (v7) still ships, but since the bot dispatches via `codex exec --json` (non-interactive, slash commands not honored), codex's native /goal loop isn't actually being triggered. Our continuous-copilot behavior is entirely prompt-driven — which is what the new doctrine wants anyway. If you want codex's TUI /goal loop someday, that's a separate pty/tmux integration (v14+ candidate). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MagMueller
added a commit
that referenced
this pull request
May 15, 2026
…omposio for codex Lands 16 stacked PRs reviewed by multiple sub-agents: - v1 (#209) /goal as primitive, per-topic autopilot vs copilot - v2 (#210) drop agency-mode gate, fold doctrine into CLAUDE.md, delete old Mini App UI - v3 (#211) CLAUDE.md → system-prompt.md (source of truth), agent identity = "agency" - v4 (#212) trim system prompt to 87 lines, mode emoji in topic title, extract bot/markdown.py - v5 (#213) heartbeat-by-default plumbing (later removed), copilot voice fix, autopilot security note - v6 (#214) steering semantics, new-topic spawning, 2-option cards, source-aware images - v7 (#215) /goal IS autopilot framing, drop topic emoji prefix, silence allowed, codex goals=true, `schedule` alias - v8 (#216) drop --spawn-topic, --importance, trim agency-report docstring - v9 (#217) new-topic helper — spawn fresh lane synchronously, queue heartbeat - v10 (#218) self-schedule only when waiting on something concrete; drop auto-heartbeats - v11 (#219) /goal is a verbatim CLI passthrough; bot is a dumb pipe - v12 (#220) drop 30-min timeout, kill lingering heartbeat, prompt-injection defenses, seed goals.md - v13 (#221) /goal stays copilot by default; autopilot only on explicit user opt-in - v14 (#222) doctrine fixes from final multi-agent review - v15 (#223) tighten autopilot triggers — drop the loose phrases - v16 (#224) register composio MCP for codex too; simplify autopilot trigger paragraph Tests: 22 pass. Follow-ups (tracked, not in this merge): - P0: install bootstrap.sh as /usr/local/sbin root:root (closes the trivial bux→root) - P1: stuck-lane watchdog (no-stdout-for-30-min SIGTERM) - P1: /invite is a dead command (remove from BotFather menu) - P1: composio tool names wrong-case in system prompt - P1: help text + COMMANDS still reference dropped autopilot trigger phrases - P1: BUX_BOX_TOKEN provenance for OSS self-host installs - P2: button-tap dispatches bypass _enqueue (lane race on rapid taps) - P2: persisted per-topic autopilot flag in state (instead of LLM phrase detection) - P2: agency_db ghost columns (importance, spawn_topic) - P2: mini app teardown decision (1700 LOC for an unreferenced surface) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #220 (v12). Fixes the '/goal X' vs 'my goal is X' confusion you called out.
New model
/goalis a continuous goal-mode signal, but stays in copilot by default. Agent keeps working across turns: scan → draft → post card → end turn. User taps Yes/Skip/More → new turn picks up via--resume. State persists inagency.db/goals.md/notebook.md. No 30-min cap.Autopilot unlocks only on explicit user opt-in. Phrases in the user's own prompt like 'don't ask me', 'just do it yourself', 'no approvals', 'full autonomy', 'don't bother me', 'act on your own' flip the topic to autopilot.
Natural-language goals = same as
/goal. 'Make my startup successful' with no slash command gets the same continuous copilot treatment.Note on codex /goal native loop
The bot dispatches via
codex exec --jsonwhich doesn't honor slash commands. So codex's native /goal loop (gated by[features] goals = true, v7) isn't actually triggered by the bot — our continuous-copilot behavior is entirely prompt-driven now. Thegoals = trueconfig still ships for users who run codex in TUI mode interactively. If you want bot-driven codex /goal TUI streaming, that's a v14+ pty/tmux integration.Tests
21 + 11 pass. Mini app imports cleanly.
🤖 Generated with Claude Code
Summary by cubic
Make
/goala continuous copilot mode: the agent keeps working across turns, posts approval cards, and has no timeout. Autopilot now requires explicit opt-in (e.g., "don't ask me", "just do it"); natural-language goals behave the same as/goal, and the system prompt plus Telegram/helptext are updated to match.Written for commit 514f18e. Summary will update on new commits. Review in cubic